import mysql.connector
from mysql.connector import Error


def create_model_metrics_table(db_config):
    """创建模型指标记录表"""
    connection = None  # 初始化连接变量
    try:
        # 建立数据库连接
        connection = mysql.connector.connect(**db_config)
        if connection.is_connected():
            cursor = connection.cursor()

            # 创建模型指标表
            create_table_query = """
            CREATE TABLE IF NOT EXISTS model_metrics (
                id INT AUTO_INCREMENT PRIMARY KEY,
                model_name VARCHAR(100) NOT NULL,
                auc_score DECIMAL(10, 4) NOT NULL,
                accuracy DECIMAL(10, 4),
                train_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
                sample_size INT NOT NULL,
                training_duration FLOAT NOT NULL,
                model_version VARCHAR(50)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
            """

            cursor.execute(create_table_query)
            connection.commit()
            print("模型指标表创建成功或已存在")

    except Error as e:
        print(f"创建表时发生错误: {e}")
        # 根据错误类型给出更具体的提示
        if e.errno == 1045:
            print("提示：数据库用户名或密码不正确，请检查配置")
    finally:
        # 关闭数据库连接（先检查connection是否已定义）
        if connection is not None and connection.is_connected():
            cursor.close()
            connection.close()
            print("数据库连接已关闭")


# 使用示例（在项目初始化处调用）
if __name__ == "__main__":
    # 数据库配置（请替换为你的实际数据库信息）
    db_config = {
        'host': 'localhost',
        'user': 'root',  # 通常默认用户是root
        'password': '123456',  # 替换为你的数据库密码
        'database': 'user_behavior',  # 确保该数据库已存在
        'port': 3306
    }

    # 创建表
    create_model_metrics_table(db_config)